Flutterまわりのメモ
概要
UIまわりちょっとやる
インストール
このへんからSDKを入れる
https://flutter.dev/docs/get-started/install
flutter/binにパスを通すとflutter コマンドが使えるようになる。
flutter make app_name でappが作られ、flutter runでprojectがビルド、実行される。
WidgetとState
~WidgetとState<T>型 があり、
Widgetで画面のレイアウト情報やカラーなどviewの見た目を、
State<T>でWidgetに対して保持するデータを扱う。
State<T>に入るT型はWidget系をとっていて、
Widgetを生成する際、Widgetの型を持つStateが探され、更新が走る、、
とかをやってそう。
-> StatefulWidgetにはState<T>を拡張した型を返すcreateState関数があり、
Widgetを生成 -> 内部でcreateStateが叩かれる -> State<T>のインスタンスが生成される、ってだけだねこれ。
State<T>はStatefulWidgetに紐づいて生成されるのがわかった。
これはなんかどういうツールチェインになっているかをみてみるべきか?
本買ったので読んでみる
正直FlutterのUIそれ自体には魅力を感じなくなってきた
これはSkia(OpenGL、Vulkan、ほかを抽象化したレイヤー)を通じて何を描画するかをDartで書いてあるだけのプラットフォームだ。
欲しかったレベルの抽象化をしていない。
ただ、プラットフォーム固有の機能を使うために、プラグインを作って呼び出せる機能があるっぽい。
FlutterUI内に特にPf Viewを表示する機能があると。なるほど?どうやってるんだそれ。
-> VirtualDisplayとHybridCompositionの2種があり、
VDは単純にサーフェスを提供してそこに描画させる、という感じだった。
描画結果を最終的にFlutter側で合成してレンダリングする形で行っており、
パフォーマンスは出るがUI操作をいい感じに追うのは無理。
ちなみに古い手法。
HCはFlutterとOSそれぞれで描画し、描画結果を組み合わせている、
つまりOSに画面の一定範囲を描かせている。
Viewという言葉を使わず、RenderObjectとかを使っているのちょっと面白い
Viewって言うとどうしても見た目になってしまうんだけど、描画対象の話をするときはこういう語彙の方がいい気がする。